Tablau DesktopからAmazon Athenaに社内のプロキシサーバ経由で接続する方法
社内からインターネットへの接続は、プロキシサーバを介した80と443ポートに限られている環境が多くあります。このような環境で、Tablau DesktopからAmazon Athenaに接続すると「クエリを実行しています。」というメッセージを出力し続け、最後にはJDBCドライバ関連のエラーが発生します。本日はこの問題を回避する方法をご紹介します。
最新のAthenaのJDBCドライバは444ポートを利用する仕様
最新のJDBCドライバ2.0.16は、デフォルトでクエリ結果のストリーミングにポート444を用いるため、444ポートのアウトバウンドトラフィックが利用できない環境ではAthenaへの接続やクエリの実行がエラーになります。(最新のODBCドライバも444ポートを利用する仕様だったりします。)
パフォーマンスとのトレードオフですが、従来どおりポート443のみで利用できる方法があります。
UseResultSetStreaming
プロパティの変更
Customizing JDBC ConnectionsのJDBC接続をカスタマイズする手順に従い、JDBCドライバマニュアルで紹介されているUseResultSetStreaming
プロパティを変更することで、Tableau におけるAthena JDBCドライバの挙動を変更します。
- UseResultsetStreaming
- 1: Streaming API を用いて結果を取得する(デフォルト)
- 0: ページネイションロジックを用いて結果を取得する
設定の変更方法
変更方法は以下のとおりです。
1. athena.properties の作成
athena.properties ファイルを作成して、以下の一行を書き込むだけです。但し、ファイルはBOMなしUTF-8で作成してください。
UseResultSetStreaming = 0
2. athena.properties の配置
Windopwsの場合は、Tableau Desktop の以下のフォルダの下に、athena.properties ファイルをコピーすると port 444のアウトバウンドトラフィックを利用しないでクエリが実行できるようになります。
C:\Users\Administrator\Documents\マイ Tableau リポジトリ\データ ソース
最後に
エンジニアならともかく、アナリストはJDBCドライバをJavaのプロパティファイルでオーバーライドなんて思いつかないと思うので、Athenaに繋がらないときはこのファイルをおまじない的に置くのが良いでしょう。
Tableauデータソースの作成画面で設定できると良いのかとも考えましたが、パブリッシュしたTableau Serverがネットワーク的に同じ条件とは限らないので、現在の仕様に落ち着いてると予想しています。AthenaとTableauは相性が良いので、リトライ時にポート443を使うなど改善してくれるとみんな幸せになれると思います。